home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_ORBit.idb / usr / freeware / include / IIOP / iiop-endian.h.z / iiop-endian.h
Encoding:
C/C++ Source or Header  |  1999-07-16  |  906 b   |  43 lines

  1. #ifndef IIOP_ENDIAN_H
  2. #define IIOP_ENDIAN_H 1
  3.  
  4. #include <glib.h>
  5.  
  6. #if G_BYTE_ORDER == G_BIG_ENDIAN
  7.  
  8. # define FLAG_ENDIANNESS FLAG_BIG_ENDIAN
  9. # define conversion_needed(to_endianness) ((to_endianness)!=FLAG_BIG_ENDIAN)
  10.  
  11. #elif G_BYTE_ORDER == G_LITTLE_ENDIAN
  12.  
  13. # define FLAG_ENDIANNESS FLAG_LITTLE_ENDIAN
  14. # define conversion_needed(to_endianness) ((to_endianness)!=FLAG_LITTLE_ENDIAN)
  15.  
  16. #else
  17.  
  18. #error "Unsupported endianness on this system."
  19.  
  20. #endif
  21.  
  22. #define FLAG_BIG_ENDIAN 0
  23. #define FLAG_LITTLE_ENDIAN 1
  24.  
  25. /* This is also defined in IIOP-types.c */
  26. void iiop_byteswap(guchar *outdata,
  27.            const guchar *data,
  28.            gulong datalen);
  29.  
  30. #ifdef G_CAN_INLINE
  31. G_INLINE_FUNC void iiop_byteswap(guchar *outdata,
  32.                  const guchar *data,
  33.                  gulong datalen)
  34. {
  35.   const guchar *source_ptr = data;
  36.   guchar *dest_ptr = outdata + datalen - 1;
  37.   while(dest_ptr >= outdata)
  38.     *dest_ptr-- = *source_ptr++;
  39. }
  40. #endif
  41.  
  42. #endif
  43.